package str

/*
时间复杂度:O(N)
空间复杂度:O(∣Σ∣)
*/
func isIsomorphic(s string, t string) bool {
	// byte类型是int8类型的别名,所以其零值为0
	s2t, t2s := make(map[byte]byte), make(map[byte]byte)
	if len(s) != len(t) {
		return false
	}
	for i := range s {
		x, y := s[i], t[i]
		// 如果key存在但是value不等于另一个字符,则表示映射错误
		if (s2t[x] > 0 && s2t[x] != y) || (t2s[y] > 0 && t2s[y] != x) {
			return false
		}
		s2t[x] = y
		t2s[y] = x
	}
	return true
}
